﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Administracao_Cadastros_acCadPatrocinadores : System.Web.UI.Page
{
    protected const int idTipoPatrocinador = 1;
    protected const int idTipoPrestador = 2;
    protected const int idTipoSindicato = 3;
    protected const int idTipoFornecedor = 4;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            OcultaCampos(true);
            DesabilitaTab(true);
            CarregaComboStatus(rcbStatus);
        }
    }

    #region Eventos

    #region Principais - Organizacao
    protected void btnSalvar_Click(object sender, EventArgs e)
    {
        try
        {
            SalvarOrganizacao();

            lblResultado.Text = "Dados salvos com sucesso!";
            lblMsg.Text = "";
            cbPatrocidador.Checked = true;
            DesabilitaTab(false);
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro: " + ex.Message;
        }
    }
    protected void btnVerificar_Click(object sender, EventArgs e)
    {
        try
        {
            Double cnpj = Double.Parse(txtCNPJ.Text.Replace(".", "").Replace("-", "").Replace("/", ""));
            Organizacao organizacao = new Organizacao(cnpj);

            if (organizacao.IdOrganizacao != 0)
            {
                CarregaDados(organizacao);
                CarregaTipoOrganizacao(organizacao.TipoOrganizacao);
                DesabilitaTab(false);
                lblMsg.Text = "CNPJ já cadastrado";
            }
            else
            {
                lblMsg.Text = "Novo cadastro";
            }

            OcultaCampos(false);

        }
        catch (Exception ex)
        {
            lblMsg.Text = "Erro: " + ex.Message;
        }
    }
    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        OcultaCampos(true);
        DesabilitaTab(true);
        LimparCampos();
        CarregaComboStatus(rcbStatus);
    }
    #endregion

    #region Contatos - Organizacao

    #region RadGrid - Telefones
    protected void rgTelefones_PreRender(object sender, System.EventArgs e)
    {
        if (!this.IsPostBack)
        {
            this.rgTelefones.MasterTableView.Rebind();
        }
    }
    protected void rgTelefones_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        if (!e.IsFromDetailTable)
        {
            if (txtCNPJ.Text != "")
                CarregarGridTelefone();
        }
    }
    #endregion

    #region RadGrid - Enderecos
    protected void rgEnderecos_PreRender(object sender, System.EventArgs e)
    {
        if (!this.IsPostBack)
        {
            this.rgEnderecos.MasterTableView.Rebind();
        }
    }
    protected void rgEnderecos_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        if (!e.IsFromDetailTable)
        {
            if (txtCNPJ.Text != "")
                CarregarGridEnderecos();
        }
    }
    #endregion

    #endregion

    #endregion

    #region Metodos

    #region Principais - Organizacao
    protected void SalvarOrganizacao()
    {
        try
        {
            Double cnpj = Double.Parse(txtCNPJ.Text.Replace(".", "").Replace("-", "").Replace("/", ""));

            //Gravar Sindicato
            Organizacao organizacao = new Organizacao();
            organizacao.IdOrganizacao = organizacao.RetornaIdOrganizacao(cnpj);
            organizacao.Cnpj = cnpj;
            organizacao.RazaoSocial = txtRazaoSocial.Text;
            organizacao.NomeFantasia = txtNomeFantasia.Text;
            organizacao.Status = new StatusOrganizacao(int.Parse(rcbStatus.SelectedValue));

            //TipoOrganizacaoOrganizacao
            List<TipoOrganizacaoOrganizacao> listTipoOrganOrgan = new List<TipoOrganizacaoOrganizacao>();
            TipoOrganizacaoOrganizacao tipoOrganOrgan = new TipoOrganizacaoOrganizacao();
            tipoOrganOrgan.TipoOrganizacao = new TipoOrganizacao(idTipoPatrocinador);
            listTipoOrganOrgan.Add(tipoOrganOrgan);

            organizacao.TipoOrganizacao = listTipoOrganOrgan;

            organizacao.Salvar();
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro: " + ex.Message;
        }
    }
    protected void CarregaDados(Organizacao organizacao)
    {
        try
        {
            //Dados Gerais
            txtNomeFantasia.Text = organizacao.NomeFantasia;
            txtRazaoSocial.Text = organizacao.RazaoSocial;
            rcbStatus.SelectedValue = organizacao.Status.IdStatusOrganizacao.ToString();
        }
        catch (Exception ex)
        {
            lblMsg.Text = "Erro: " + ex.Message;
        }
    }

    protected void CarregaTipoOrganizacao(List<TipoOrganizacaoOrganizacao> tiposOrganizacao)
    {
        try
        {
            foreach (TipoOrganizacaoOrganizacao row in tiposOrganizacao)
            {
                switch (row.TipoOrganizacao.IdTipoOrganizacao)
                {
                    case idTipoPatrocinador:
                        cbPatrocidador.Checked = true;
                        break;
                    case idTipoPrestador:
                        cbPrestador.Checked = true;
                        break;
                    case idTipoSindicato:
                        cbSindicato.Checked = true;
                        break;
                    case idTipoFornecedor:
                        cbFornecedor.Checked = true;
                        break;
                    default:
                        break;
                }
            }
        }
        catch (Exception ex)
        {
            lblMsg.Text = "Erro: " + ex.Message;
        }
    }

    protected void CarregaComboStatus(RadComboBox combo)
    {
        StatusOrganizacao statusOrganicao = new StatusOrganizacao();
        List<StatusOrganizacao> listStatus = statusOrganicao.SelectAll();

        combo.DataTextField = "Descricao";
        combo.DataValueField = "IdStatusOrganizacao";
        combo.DataSource = listStatus;
        combo.DataBind();
    }

    protected void OcultaCampos(bool oculta)
    {
        trRazaoSocial.Visible = !oculta;
        trNomeFantasia.Visible = !oculta;
        trStatus.Visible = !oculta;
        trTipoOrgan.Visible = !oculta;
        btnSalvar.Visible = !oculta;

        btnVerificar.Visible = oculta;
        txtCNPJ.Enabled = oculta;
    }

    protected void DesabilitaTab(bool desabilita)
    {
        RadTab tab = RadTabStrip2.FindTabByText("Contatos");
        tab.Enabled = !desabilita;

        tab = RadTabStrip2.FindTabByText("Relação Prestadores");
        tab.Enabled = !desabilita;
    }

    protected void LimparCampos()
    {
        txtCNPJ.Text = "";
        cbPatrocidador.Checked = false;
        cbPrestador.Checked = false;
        cbSindicato.Checked = false;
        cbFornecedor.Checked = false;
        txtRazaoSocial.Text = "";
        txtNomeFantasia.Text = "";
        lblMsg.Text = "";
        lblResultado.Text = "";
    }
    #endregion

    #region Contatos - Organizacao

    #region RagGrid - Telefones
    protected void CarregarGridTelefone()
    {
        try
        {
            Double cnpj = Double.Parse(txtCNPJ.Text.Replace(".", "").Replace("-", "").Replace("/", ""));

            OrganizacaoTelefone organTelefone = new OrganizacaoTelefone();
            List<OrganizacaoTelefone> listOrganTelefone = new List<OrganizacaoTelefone>();

            listOrganTelefone = organTelefone.SelectOrganizacao(cnpj);

            rgTelefones.DataSource = listOrganTelefone;
            //rgTelefones.DataBind();
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro: " + ex.Message;
        }
    }
    #endregion

    #region RadGrid - Enderecos
    protected void CarregarGridEnderecos()
    {
        try
        {
            Double cnpj = Double.Parse(txtCNPJ.Text.Replace(".", "").Replace("-", "").Replace("/", ""));

            OrganizacaoEndereco organEndereco = new OrganizacaoEndereco();
            List<OrganizacaoEndereco> listOrganEndereco = new List<OrganizacaoEndereco>();

            listOrganEndereco = organEndereco.SelectOrganizacao(cnpj);

            rgEnderecos.DataSource = listOrganEndereco;
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro: " + ex.Message;
        }
    }
    #endregion

    #endregion

    #endregion
}

